#ifndef ALGORITHM_H
#define ALGORITHM_H

#include "basic.h"
// pid_control.h
typedef struct
{
    float Kp;              // 比例增益
    float Ki;              // 积分增益
    float Kd;              // 微分增益
    float max_output;      // 输出限幅
    float integral;        // 积分累积值
    float prev_error;      // 前一次误差（用于积分和微分）
    float prev_derivative; // 前一次微分值（用于滤波）
    float tau;             // 微分低通滤波时间常数
} pid_control_t;

void pid_init(pid_control_t *pid, float Kp, float Ki, float Kd, float max_output);
float pid_update(pid_control_t *pid, float error, float dt);

#endif // ALGORITHM_H